

export default {
	// 命名空间
	namespaced: true,
	state: {
		// 商品数组  需要从 本地存储中 获取
		goodsList: uni.getStorageSync("goodsList") || [],
		allPrice: 0,
		checked: uni.getStorageSync("checked") || false
	},
	getters: {
		// 选中了的商品数组
		checkGoodsList(state) {
			return state.goodsList.filter((v) => v.checked);
		},
		// 所有的商品的数量
		totalNums(state) {
			let sum = 0;
			state.goodsList.forEach((v) => {
				if (v.checked === true) {
					sum += v.num
				}
			});
			return sum;
		},
		totalPrice(state) {  //总价计算
			let sum = 0;
			state.goodsList.forEach((v) => {
				if (v.checked === true) {
					sum += v.goods_price * v.num
				}
			});
			return sum
		},
		Checked(state) {

			return state.checked
		}
	},
	mutations: {
		// 购买商品
		// payload 等于当前被购买的对象 里面拥有属性
		//  { 商品的id, 商品图片， 商品名称 商品价格 购买数量， 选中的状态 }
		/* 
		业务：
		1 拿当前准备添加的商品id 和 数组中的每一种商品的id 做判断
		2 如果发现 已经存在同样的商品了，  只需要对该商品的购买数量 ++ 
		3 如果 没有发现 已经存在相同的商品，
		   再去执行 数组添加新商品
		 */
		cartAdd(state, payload) {
			// 判断当前要购买的商品是否已经存在
			// 如果没有找到 index = -1
			// 如果找到了 index 等于元素的下标
			const index = state.goodsList.findIndex(
				(v) => v.goods_id === payload.goods_id
			);

			if (index === -1) {
				// 没有找到相同    表示 第一次购买
				// num 购买数量 checked 选中状态
				state.goodsList.push({ ...payload, num: 1, checked: true });
			} else {
				// 找到了已经购买过的商品
				state.goodsList[index].num++;
			}

			state.checked = state.goodsList.every(item => item.checked === true)
			uni.setStorageSync("checked", state.checked);
			console.log('仓库数据', state.goodsList);
			// 把数据 存到 本地存储中
			uni.setStorageSync("goodsList", state.goodsList);
		},

		// 商品切换选中  payload   是元素的下标
		cartCheckToggle(state, payload) {
			// 取反
			state.goodsList[payload].checked = !state.goodsList[payload].checked;
			state.checked = state.goodsList.every(item => item.checked === true)
			// console.log(state.checked,'是不是全选');
			// 把数据 存到 本地存储中
			uni.setStorageSync("goodsList", state.goodsList);
			uni.setStorageSync("checked", state.checked);
		},
		// 商品数量修改
		// payload = 对象 里面  有 属性 index、unit
		cartNumUpdate(state, payload) {
			console.log(payload.unit, '点击获取的东西');
			state.goodsList[payload.index].num += payload.unit;



			// 把数据 存到 本地存储中
			uni.setStorageSync("goodsList", state.goodsList);
		},
		// 根据下标 来删除数组中的元素
		cartDeleteOne(state, payload) {
			// 数组删除元素
			state.goodsList.splice(payload, 1);
			console.log(state.goodsList.length, '数据长度');
			if (state.goodsList.length !== 0) {
				state.checked = state.goodsList.every(item => item.checked === true)

			} else {
				state.checked = false

			}
			// 把数据 存到 本地存储中
			uni.setStorageSync("checked", state.checked); //存本地
			uni.setStorageSync("goodsList", state.goodsList);//存本地
		},
		changeCheck(state) {
			state.checked = !state.checked  //取反一下 代表全都选或者全都不选

			state.goodsList.forEach(item => item.checked = state.checked) //全部改为全选或者全不选

			uni.setStorageSync("goodsList", state.goodsList); //存本地
			uni.setStorageSync("checked", state.checked); //存本地
		}


	},
	actions: {},
};
